<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>QCNSim: QcnSimTest/ProtocolDataUnitTest.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">QCNSim
   </div>
   <div id="projectbrief">Simulator for Quake-Catcher Network</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_3e989efef406e88ca8d8bde4ec47b67f.html">QcnSimTest</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">ProtocolDataUnitTest.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_protocol_data_unit_test_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_protocol_data_unit_test_8h.html">ProtocolDataUnitTest.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="class_protocol_data_unit_test.html#a784777fb45108f8a87798cc1c29afadb">   27</a></span>&#160;<a class="code" href="class_protocol_data_unit_test.html#a784777fb45108f8a87798cc1c29afadb">ProtocolDataUnitTest::ProtocolDataUnitTest</a>(): contents(new <a class="code" href="class_message.html">Message</a>(<span class="stringliteral">&quot;This is PDU contents.&quot;</span>)),</div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;        simulatorGlobals(<a class="code" href="class_simulator_globals.html">SimulatorGlobals</a>(0.0, 0.0, false, <span class="stringliteral">&quot;PDUTest&quot;</span>)) {</div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;}</div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="_protocol_data_unit_test_8cpp.html#af5187fe94c7a5dddca007c21a918ef85">   33</a></span>&#160;<a class="code" href="_constant_rate_traffic_generator_test_8cpp.html#a26497dd468babfeebfd7e976fdc56dd6">TEST_F</a>(<a class="code" href="class_protocol_data_unit_test.html">ProtocolDataUnitTest</a>, Routing) {</div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    <span class="comment">// Build 5 nodes. Will test routing between them using explicit route attached to pdus. No need for links or facilities here.</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <span class="comment">//std::shared_ptr&lt;Message&gt; dummyContents(new Message(&quot;This is a dummy ProtocolDataUnit contents.&quot;));</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    std::vector&lt;std::shared_ptr&lt;Node&gt;&gt; nodeVector;</div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    std::vector&lt;std::shared_ptr&lt;Entity&gt;&gt; explicitRoute;</div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 5; ++i) {</div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;        nodeVector.push_back(std::shared_ptr&lt;Node&gt;(<span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(simulatorGlobals)));</div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    }</div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    <span class="comment">// Push each node in a certain order to the explicitRoute vector. Let&#39;s have the first one as the source, the last one as the destination.</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    explicitRoute.push_back(nodeVector.at(0));</div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    explicitRoute.push_back(nodeVector.at(1));</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    explicitRoute.push_back(nodeVector.at(2));</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    explicitRoute.push_back(nodeVector.at(3));</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    explicitRoute.push_back(nodeVector.at(4));</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="comment">// Create one explicit Route.</span></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="comment">//Route route(explicitRoute, true);</span></div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="comment">//EXPECT_EQ(explicitRoute, route.getExplicitRoute());</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="comment">// Let&#39;s test the basic functions for setting and getting explicit route. PDU size will be 1000 bytes.</span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    std::shared_ptr&lt;ProtocolDataUnit&gt; pdu(<span class="keyword">new</span> <a class="code" href="class_protocol_data_unit.html">ProtocolDataUnit</a>(simulatorGlobals, 1, <span class="keyword">nullptr</span>, nodeVector.at(0), nodeVector.at(4), 1000));</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="comment">// Get initial TTL</span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ttl = pdu-&gt;getTtl();</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    EXPECT_EQ(128, ttl);</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    EXPECT_EQ(pdu-&gt;source, nodeVector.at(0));</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    EXPECT_EQ(pdu-&gt;destination, nodeVector.at(4));</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    EXPECT_EQ(1000, pdu-&gt;getPduSize());</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    EXPECT_FALSE(pdu-&gt;previous); <span class="comment">// That&#39;s the way to test for nullptr smart pointers.</span></div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    EXPECT_FALSE(pdu-&gt;next);</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="comment">// Attach route vector (NOT route object) to pdu&#39;s Route object and set it to record route.</span></div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    pdu-&gt;setExplicitRoute(explicitRoute);</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    pdu-&gt;setRecordThisRoute();</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    EXPECT_EQ(explicitRoute, pdu-&gt;getExplicitRoute());</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="comment">// Give the pdu to the source node and let it forward.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    nodeVector.at(0)-&gt;processAndForward(pdu);</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// Is the first element of recorded route really the source?</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    EXPECT_EQ(nodeVector.at(0), pdu-&gt;getRecordedRoute().front());</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="comment">// Was TTL decremented?</span></div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    EXPECT_EQ(ttl - 1, pdu-&gt;getTtl());</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="comment">// Set the explicit route again, check whether the recorded route was erased.</span></div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    pdu-&gt;setExplicitRoute(explicitRoute);</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    EXPECT_EQ(0, pdu-&gt;getRecordedRoute().size());</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="comment">// Se the record route to false; route should not be recorded.</span></div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    pdu-&gt;setDoNotRecordThisRoute();</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="comment">// Let&#39;s push hops into the recordedRoute.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(0));</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(1));</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(2));</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(3));</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(4));</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="comment">// Recorded route should be empty.</span></div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    EXPECT_TRUE(pdu-&gt;getRecordedRoute().empty());</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="comment">// Now enable route recording and repeat.</span></div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    pdu-&gt;setRecordThisRoute();</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="comment">// Let&#39;s push hops into the recordedRoute.</span></div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(0));</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(1));</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(2));</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(3));</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    pdu-&gt;addHopToRecordedRoute(nodeVector.at(4));</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="comment">// That was basically explicitRoute vector. Verify.</span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    EXPECT_EQ(explicitRoute, pdu-&gt;getRecordedRoute());</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="comment">// Now manually furnish nodes to pdu and allow it to update its previous/next members by calling the forward function.</span></div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="comment">// Route is Node 0, 1, 2, 3, 4. Source is 0, destination is 4.</span></div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="comment">// Begin with source node. Since the next hop in the list is node 0, previous will be zero, next will be zero. The update function within PDU does not treat this.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(0));</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    EXPECT_EQ(nodeVector.at(0), pdu-&gt;previous);</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    EXPECT_EQ(nodeVector.at(0), pdu-&gt;next); </div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="comment">// Observe that while the pdu is still &quot;at&quot; current node 0, the next one will be 1 and the previous is 0 after updating forward members. PDU is &quot;about&quot; to exit node 0.</span></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// When the pdu reaches node 1, the current node is 1, the previous node is 0, and the next node is 1 (before updating forward members).</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">// Now &quot;forward&quot; to node 1, the next hop.</span></div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(0));</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    EXPECT_EQ(nodeVector.at(0), pdu-&gt;previous);</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    EXPECT_EQ(nodeVector.at(1), pdu-&gt;next);</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="comment">// Now &quot;forward&quot; to node 2, the next hop.</span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(1));</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    EXPECT_EQ(nodeVector.at(1), pdu-&gt;previous);</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    EXPECT_EQ(nodeVector.at(2), pdu-&gt;next);</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="comment">// Now &quot;forward&quot; to node 3, the next hop.</span></div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(2));</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    EXPECT_EQ(nodeVector.at(2), pdu-&gt;previous);</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    EXPECT_EQ(nodeVector.at(3), pdu-&gt;next);</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="comment">// Now &quot;forward&quot; to node 4, the next hop.</span></div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(3));</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    EXPECT_EQ(nodeVector.at(3), pdu-&gt;previous);</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    EXPECT_EQ(nodeVector.at(4), pdu-&gt;next);</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="comment">// Now attempt forwarding past node 4. The pdu should get stuck at node 4, since the pdu has no intelligence to consider itself reaching a destination. Attempt this three times.</span></div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(4));</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    EXPECT_EQ(nodeVector.at(4), pdu-&gt;previous);</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    EXPECT_EQ(nodeVector.at(4), pdu-&gt;next);</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(4));</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    EXPECT_EQ(nodeVector.at(4), pdu-&gt;previous);</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    EXPECT_EQ(nodeVector.at(4), pdu-&gt;next);</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(4));</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    EXPECT_EQ(nodeVector.at(4), pdu-&gt;previous);</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    EXPECT_EQ(nodeVector.at(4), pdu-&gt;next);</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    </div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">// Let&#39;s attach no route.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    pdu-&gt;setExplicitRoute(std::vector&lt;std::shared_ptr&lt;Entity&gt;&gt;());</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    EXPECT_TRUE(pdu-&gt;getExplicitRoute().empty());</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    EXPECT_TRUE(pdu-&gt;getRecordedRoute().empty());</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="comment">// Now if we attempt to have a node forward the pdu, it should not work.</span></div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(0));</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    EXPECT_EQ(nodeVector.at(0), pdu-&gt;previous);</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    EXPECT_FALSE(pdu-&gt;next); <span class="comment">// This should be null.</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="comment">// Try again. Same outcome.</span></div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(0));</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    EXPECT_EQ(nodeVector.at(0), pdu-&gt;previous);</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    EXPECT_FALSE(pdu-&gt;next); <span class="comment">// This should be null.</span></div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="comment">// Have another node forward the pdu. Only the previous field should be modified.</span></div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    pdu-&gt;updateHopsFromExplicitRoute(nodeVector.at(3));</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    EXPECT_EQ(nodeVector.at(3), pdu-&gt;previous);</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    EXPECT_FALSE(pdu-&gt;next); <span class="comment">// This should be null.</span></div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    </div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;}</div>
<div class="ttc" id="class_protocol_data_unit_html"><div class="ttname"><a href="class_protocol_data_unit.html">ProtocolDataUnit</a></div><div class="ttdoc">Protocol Data Unit class. </div><div class="ttdef"><b>Definition:</b> <a href="_protocol_data_unit_8h_source.html#l00033">ProtocolDataUnit.h:33</a></div></div>
<div class="ttc" id="class_protocol_data_unit_test_html"><div class="ttname"><a href="class_protocol_data_unit_test.html">ProtocolDataUnitTest</a></div><div class="ttdoc">Fixture for PDU Tests. </div><div class="ttdef"><b>Definition:</b> <a href="_protocol_data_unit_test_8h_source.html#l00029">ProtocolDataUnitTest.h:29</a></div></div>
<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node class. </div><div class="ttdef"><b>Definition:</b> <a href="_node_8h_source.html#l00051">Node.h:51</a></div></div>
<div class="ttc" id="_protocol_data_unit_test_8h_html"><div class="ttname"><a href="_protocol_data_unit_test_8h.html">ProtocolDataUnitTest.h</a></div></div>
<div class="ttc" id="class_message_html"><div class="ttname"><a href="class_message.html">Message</a></div><div class="ttdoc">Message class. </div><div class="ttdef"><b>Definition:</b> <a href="_message_8h_source.html#l00032">Message.h:32</a></div></div>
<div class="ttc" id="class_simulator_globals_html"><div class="ttname"><a href="class_simulator_globals.html">SimulatorGlobals</a></div><div class="ttdoc">Simulator-scope variables and parameters. </div><div class="ttdef"><b>Definition:</b> <a href="_simulator_globals_8h_source.html#l00158">SimulatorGlobals.h:158</a></div></div>
<div class="ttc" id="_constant_rate_traffic_generator_test_8cpp_html_a26497dd468babfeebfd7e976fdc56dd6"><div class="ttname"><a href="_constant_rate_traffic_generator_test_8cpp.html#a26497dd468babfeebfd7e976fdc56dd6">TEST_F</a></div><div class="ttdeci">TEST_F(ConstantRateTrafficGeneratorTest, ConstantRateRateGeneratorTest)</div><div class="ttdoc">Tests for constant rate generator. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_rate_traffic_generator_test_8cpp_source.html#l00034">ConstantRateTrafficGeneratorTest.cpp:34</a></div></div>
<div class="ttc" id="class_protocol_data_unit_test_html_a784777fb45108f8a87798cc1c29afadb"><div class="ttname"><a href="class_protocol_data_unit_test.html#a784777fb45108f8a87798cc1c29afadb">ProtocolDataUnitTest::ProtocolDataUnitTest</a></div><div class="ttdeci">ProtocolDataUnitTest()</div><div class="ttdef"><b>Definition:</b> <a href="_protocol_data_unit_test_8cpp_source.html#l00027">ProtocolDataUnitTest.cpp:27</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Jan 6 2014 12:30:38 for QCNSim by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
